Developing a system with a software component often may involve system requirements provided by a customer. The requirements may be informally written and may express a vague idea of what the software should do. The requirements may also include business requirements, such as those from marketing, sourcing, and management. The different requirements may be written with differing levels of detail depending on, for example, the context and the available knowledge of the author. Effort may then be spent on manually reviewing and analyzing the requirements for completeness and inconsistencies. Ambiguities inherent in textual expression provided in the requirements may result in a time consuming process that includes flaws. These flaws may not be found until system verification and test phases. In some areas, the cost to fix a fault in the system test phase is 10 to 15 times more expensive than if the fault is caught early during the requirements engineering or design phases.
Therefore, it would be desirable to design an apparatus and method that provides for a quicker way to specify requirements that ensures accuracy and discovers a majority of errors earlier in the process than the system verification and test phases.